{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "Probabilistic clustering with Gaussian Mixture Models"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7453e80>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nXkPDCmprq1ZOqohBJh3Ampo2UVs7t2r1liw5v2q1pEo5tShJyppBJknKmkEmScqaQSZJyppBJknK\nmkEmScqaQSZJyppBJknKmkEmScpap0EWEd+MiOaIeLqs7dqIeDkifln8fLjssasj4oWIeC4ipvVW\nxyVJgspGZLcBf9RO+4KU0vuLn/8CiIiTgQuBk4HpwM0REVXrrSRJbXR6rcWU0pKIGNPOQ+0F1HnA\nopTSLqAxIl4AJgA/71k3JannGhqWMWvW3KrVq6kZxvz5s6tWT93Tk4sGXxkRnwGeAv4qpbQZOAZ4\nvGybtUWbJPW5rVtTVS+S3NhYvVrqvu4G2c3A/JRSioivAd8A/qSrRebOndtyu66ujrq6um52R5KU\no/r6eurr63tUo1tBllLaUHb3FuD+4vZa4Liyx44t2tpVHmSSpANP20HMvHnzulyj0uX3Qdk5sYgY\nVfbYHwPLi9v3ARdFxMERMRY4Hniyy72SJKlCnY7IIuJOoA44MiKagGuBqRFxCrAbaAT+FCCltCIi\n7gZWADuBK1JKqXe6LklSZasWZ7bTfNtetr8euL4nnZIkqVJe2UOSlDWDTJKUtZ58jkyqijnXz6Gp\nuakqtRqebqD2/Nqq1JKUB4NMfa6pualq4bPkySVVqSMpH04tSpKyZpBJkrJmkEmSsmaQSZKyZpBJ\nkrJmkEmSsmaQSZKyZpBJkrJmkEmSsmaQSZKyZpBJkrJmkEmSsmaQSZKyZpBJkrJmkEmSsmaQSZKy\nZpBJkrJmkEmSsmaQSZKyZpBJkrJmkEmSsmaQSZKyZpBJkrJmkEmSsmaQSZKyZpBJkrJmkEmSsmaQ\nSZKyZpBJkrJmkEmSsmaQSZKyZpBJkrJmkEmSsmaQSZKyZpBJkrJmkEmSsmaQSZKyZpBJkrJmkEmS\nsmaQSZKyZpBJkrJmkEmSsmaQSZKy1mmQRcQ3I6I5Ip4uaxseEYsjYmVE/Dgijih77OqIeCEinouI\nab3VcUmSoLIR2W3AH7Vpuwr4SUrpROAh4GqAiHgvcCFwMjAduDkionrdlSSptU6DLKW0BNjYpvk8\nYGFxeyFwfnH748CilNKulFIj8AIwoTpdlSTpnbp7juzdKaVmgJTSeuDdRfsxwEtl260t2iRJ6hUD\nq1QndedJc+fObbldV1dHXV1dlbojScpBfX099fX1ParR3SBrjoiRKaXmiBgF/KZoXwscV7bdsUVb\nu8qDTJJ04Gk7iJk3b16Xa1Q6tRjFzx73AbOK25cBPyhrvygiDo6IscDxwJNd7pUkSRXqdEQWEXcC\ndcCREdEEXAvcANwTEZ8F1lBaqUhKaUVE3A2sAHYCV6SUujXtKElSJToNspTSzA4e+lAH218PXN+T\nTkmSVCmv7CFJyppBJknKmkEmScqaQSZJyppBJknKmkEmScqaQSZJyppBJknKmkEmScqaQSZJyppB\nJknKmkEmScpatb5YU9I+1LC0gVmzZ/W4zpLlS1m9fjdTJ83veaekPmKQSRnaumMrtefX9rjOUhrZ\nvLSp5x2S+pBTi5KkrBlkkqSsGWSSpKwZZJKkrBlkkqSsGWSSpKwZZJKkrBlkkqSsGWSSpKwZZJKk\nrHmJKknqpoaGZcyaNbcqtWpqhjF//uyq1DrQGGSS1E1btyZqa+dWpVZjY3XqHIgMMikzP/3pEzQ3\nv86999b3uNYr6zdwNLU9riP1JYNMyszmzb9l0KARDBtW1+NaTU2Let4hqY+52EOSlDVHZOqyOdfP\noam5et9h1fB0Q1W+W0vSgckgU5c1NTdVNXiWPLmkarUkHXicWpQkZc0gkyRlzSCTJGXNIJMkZc0g\nkyRlzSCTJGXNIJMkZc0gkyRlzSCTJGXNIJMkZc0gkyRlzSCTJGXNIJMkZc0gkyRlzSCTJGWtR99H\nFhGNwGZgN7AzpTQhIoYDdwFjgEbgwpTS5h72U5KkdvV0RLYbqEspnZpSmlC0XQX8JKV0IvAQcHUP\nX0OSpA71NMiinRrnAQuL2wuB83v4GpIkdainQZaA/46IX0TEnxRtI1NKzQAppfXAu3v4GpIkdahH\n58iAs1JKr0TE7wGLI2IlpXAr1/a+JElV06MgSym9Uvy7ISLuBSYAzRExMqXUHBGjgN909Py5c+e2\n3K6rq6Ourq4n3ZEkZaa+vp76+voe1eh2kEXEYGBASmlLRBwGTAPmAfcBs4AbgcuAH3RUozzIJEkH\nnraDmHnz5nW5Rk9GZCOB/4yIVNS5I6W0OCKeAu6OiM8Ca4ALe/AakiTtVbeDLKW0GjilnfbXgQ/1\npFOSJFXKK3tIkrJmkEmSsmaQSZKyZpBJkrJmkEmSsmaQSZKyZpBJkrJmkEmSsmaQSZKyZpBJkrJm\nkEmSsmaQSZKyZpBJkrJmkEmSsmaQSZKyZpBJkrLWk2+IllSBn/70CTZv/i3Nza9z7731Pa73yvoN\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x71bafd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    " \n",
    "N = 1000\n",
    "in_m = 72\n",
    "in_w = 66\n",
    "s_m = 2\n",
    "s_w = s_m\n",
    "m = np.random.normal(in_m, s_m, N)\n",
    "w = np.random.normal(in_w, s_w, N)\n",
    "from matplotlib import pyplot as plt\n",
    " \n",
    "%matplotlib inline\n",
    "f, ax = plt.subplots(figsize=(7, 5))\n",
    "ax.set_title(\"Histogram of Heights\")\n",
    "ax.hist(m, alpha=.5, label=\"Men\");\n",
    "ax.hist(w, alpha=.5, label=\"Women\");\n",
    "ax.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "random_sample = np.random.choice([True, False], size=m.size)\n",
    "m_test = m[random_sample]\n",
    "m_train = m[~random_sample]\n",
    "w_test = w[random_sample]\n",
    "w_train = w[~random_sample]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.1620595168883931"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy import stats\n",
    "m_pdf = stats.norm(m_train.mean(), m_train.std())\n",
    "w_pdf = stats.norm(w_train.mean(), w_train.std())\n",
    "m_pdf.pdf(m[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.012675120809233463"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "w_pdf.pdf(m[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "guesses_m = np.ones_like(m_test)\n",
    "guesses_m[m_pdf.pdf(m_test) < w_pdf.pdf(m_test)] = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.93207547169811322"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "guesses_m.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.94339622641509435"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "guesses_w = np.ones_like(w_test)\n",
    "guesses_w[m_pdf.pdf(w_test) > w_pdf.pdf(w_test)] = 0\n",
    "guesses_w.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "s_m = 1\n",
    "s_w = 4\n",
    "m = np.random.normal(in_m, s_m, N)\n",
    "w = np.random.normal(in_w, s_w, N)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x8a8b128>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x899e198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "m_test = m[random_sample]\n",
    "m_train = m[~random_sample]\n",
    "w_test = w[random_sample]\n",
    "w_train = w[~random_sample]\n",
    "f, ax = plt.subplots(figsize=(7, 5))\n",
    "ax.set_title(\"Histogram of Heights\")\n",
    "ax.hist(m_train, alpha=.5, label=\"Men\");\n",
    "ax.hist(w_train, alpha=.5, label=\"Women\");\n",
    "ax.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x8d693c8>]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f2d470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "m_pdf = stats.norm(m_train.mean(), m_train.std())\n",
    "w_pdf = stats.norm(w_train.mean(), w_train.std())\n",
    " \n",
    "x = np.linspace(50,80,300)\n",
    "plt.figure(figsize=(8,5))\n",
    "plt.title('PDF of Heights')\n",
    "plt.plot(x, m_pdf.pdf(x), 'k', linewidth=2, color='blue', label='Men')\n",
    "plt.plot(x, w_pdf.pdf(x), 'k', linewidth=2, color='green',label='Women')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0xa4447b8>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n6wDZ2nb2uvwI+LafWFS+F/gsmWbyH2eP/98rlFUkUHbi+1hhQ7MtZGoIL7p7bvrAqWR+/PqBCeAa\nd98fTlFFRERaWy015QeYPT0C4FZgh7ufCzxC8ydzEBERiU3VNWXIJBYA/javprwPeJe7v2hmrwPG\n3H1pOEUVERFpbY32Kb8mN4/P3f+NzER+ERERqUPQA71CT+IvIiLSquY2+P4Xzey1ec3XU6U2NDMF\nbBERaSvuXtMc/Vprysbs+Ypf5cT8ymuBvyn3Zndv28cdd9wRexl07jp/nb/OX+cf3aMeVQdlM9sK\n/APwpuyqKtcBd5NJ4PB94IrscxEREalD1c3X7l6YISlnVUBlERERaWvK6BWRwcHBuIsQm3Y+d9D5\n6/wH4y5CrNr9/GtV0zzlhg5k5lEdS0REJG5mhoc80EtERERCoqAsIiKSEArKIiIiCaGgLCIikhAK\nyiIiIgmhoCwiIpIQCsoiIiIJoaAsIiKSEArKIiIiCaGgLCIikhAKyiIiIgmhoCwiIpIQCsoiIiIJ\noaAsIiKSEArKIiIiCaGgLCIikhAKyiIiIgmhoCwiIpIQCsoiIiIJoaAsIiKSEArKIiIiCaGgLCIi\nkhAKyiIiIgmhoCwiIpIQCsoiIiIJoaAsIiKSEArKIiIiCaGgLG0tnU4zPj5OOp2OuygiIgrK0r5G\nRrbT37+U1avX0t+/lJGR7XEXSUTanLl74zsxWwcMA8eA7wHXufvhgm08iGOJBCGdTtPfv5Tp6Z3A\nBcATpFIrmZzcR19fX9zFE5EWYGa4u9XynoZrymZ2OvD7wHJ3vwCYC/xWo/sVCdPExASdnQNkAjLA\nBXR09DMxMRFfoUSk7QXVfD0HmG9mc4F5wAsB7VckFAMDAxw+PAE8kf3LE8zMTDIwMBBfoUSk7TUc\nlN39BeCTwDPA88C/u/uORvcrEqa+vj62bLmPVGolvb3LSaVWsmXLfWq6FpFYNdynbGaLgC8Bvwns\nB74I/LW7by3YTn3KkjjpdJqJiQkGBgYUkEUkUPX0Kc8N4LirgKfd/afZQnwZeBuwtXDD9evXH//3\n4OAgg4ODARxepH59fX0KxiISiLGxMcbGxhraRxA15bcCW4AVwCHgAWDc3T9dsJ1qyiIi0jZiGX3t\n7rvINFnvAR4HDNjc6H5FRETaTSDzlKs6kGrKIiLSRmKpKYuIiEgwFJRFREQSQkFZREQkIRSURURE\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x896a7f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "class_A = np.random.normal(0, 1, size=(100, 2))\n",
    "class_B = np.random.normal(4, 1.5, size=(100, 2))\n",
    "f, ax = plt.subplots(figsize=(8, 5))\n",
    "plt.title('Random 2D Normal Draws')\n",
    "ax.scatter(class_A[:,0], class_A[:,1], label='A', c='r')\n",
    "ax.scatter(class_B[:,0], class_B[:,1], label='B')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GaussianMixture(covariance_type='full', init_params='kmeans', max_iter=100,\n",
       "        means_init=None, n_components=2, n_init=1, precisions_init=None,\n",
       "        random_state=None, reg_covar=1e-06, tol=0.001, verbose=0,\n",
       "        verbose_interval=10, warm_start=False, weights_init=None)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.mixture import GaussianMixture\n",
    "gmm = GaussianMixture(n_components=2)\n",
    "X = np.row_stack((class_A, class_B))\n",
    "y = np.hstack((np.ones(100), np.zeros(100)))\n",
    "\n",
    "train = np.random.choice([True, False], 200)\n",
    "gmm.fit(X[train])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 1, 1, 1, 1], dtype=int64)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gmm.predict(X[train])[:5]"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
